Speculative actions based on user dwell time over selectable content

ABSTRACT

Methods, systems, and techniques for reducing web page load time are provided. An exemplary method for reducing web page load time includes detecting, in a browser, a cursor in a region of a web page. The region surrounds a selectable item associated with a URL. The exemplary method includes determining whether the cursor is present in the region for a threshold period of time. The exemplary method further includes performing a speculative action when it is determined that the cursor has been present in the region for the threshold period of time, without modifying underlying code of a web page associated with the URL.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 13/252,912, filed Oct. 4, 2011, the disclosure of which isincorporated herein by reference.

BACKGROUND

A client sends a request to a server for a web page. The server sendsthe requested web page to the client to display. The user may navigateto a different web page or a different location within the web page byselecting a link in the web page. It typically takes the user some time,for example 200 milliseconds, to focus in on a link and then select it.This may be for a variety of reasons. For example, it may take a usertime to position and focus the cursor over the selectable item to selectit. This may depend on such factors as a user's hand-eye coordination orexperience controlling the user interface cursor. Also, a user may beindecisive and take a moment to decide whether to select the item.

BRIEF SUMMARY

An exemplary method for reducing web page load time includes detecting,in a browser, a cursor in a region of a web page, the region surroundinga selectable item associated with a uniform resource locator (URL). Theexemplary method may also include determining whether the cursor ispresent in the region for a threshold period of time. The exemplarymethod may further include performing a speculative action when it isdetermined that the cursor has been present in the region for thethreshold period of time, without modifying underlying code of a webpage associated with the URL.

Another exemplary method includes detecting, by a touch screen device,an object within a proximity above a region of the touch screen device,the region surrounding a selectable item associated with a URL displayedon a web page. The exemplary method may also include determining whetherthe object is located within the proximity above the region of the touchscreen device for a threshold period of time. The exemplary method mayfurther include performing a speculative action when it is determinedthat the object has been located within the proximity above the regionfor the threshold period of time, without modifying underlying code of aweb page associated with the URL.

Other embodiments include corresponding systems, apparatuses, andcomputer program products configured to perform the actions of thesemethods, encoded on computer storage devices.

Further embodiments, features, and advantages, as well as the structureand operation of the various embodiments are described in detail belowwith reference to accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES

Embodiments are described with reference to the accompanying drawings.In the drawings, like reference numbers may indicate identical orfunctionally similar elements. The drawing in which an element firstappears is generally indicated by the left-most digit in thecorresponding reference number.

FIG. 1 shows an illustration of an exemplary communication system inwhich embodiments can be implemented, according to an embodiment.

FIG. 2 shows a block diagram of an exemplary computer system, accordingto an embodiment.

FIG. 3A shows an example web page that includes a region surrounding aselectable item associated with a URL, according to an embodiment.

FIG. 3B shows an example web page that includes regions surroundingselectable items associated with URLs, according to an embodiment.

FIG. 4A shows an example web page displayed on a touch screen device,according to an embodiment.

FIG. 4B shows an object located within a proximity above a region of atouch screen device, according to an embodiment.

FIG. 5 shows a flowchart of an exemplary method for reducing web pageload time based on user dwell time, according to an embodiment.

FIG. 6 shows a flowchart of another exemplary method for reducing webpage load time based on user dwell time, according to an embodiment.

DETAILED DESCRIPTION OF EMBODIMENT(S)

I. Overview

II. Exemplary System Architecture

III. Exemplary Client Browser

-   -   A. Selecting an Item with a Cursor    -   B. Selecting an Item via a Touch Screen Device    -   C. Other Example Embodiments

IV. Threshold Period of Time

V. Exemplary Methods

VI. Conclusion

I. Overview

This description generally relates to network communication. A clientbrowser may display a web page that contains items (e.g., links)selectable by a user. It can take at least 200-400 milliseconds for auser to, for example, place a cursor over the selectable item and“click” on it. During this delay, an application may speculate and takeactions on behalf of the user that reduce observed latency.

Some user actions may indicate a high probability that the user willselect a particular item in the web page in the near future. Forexample, a cursor lingering near a selectable item for a thresholdperiod of time may indicate a high likelihood that the user will selectthe item in the near future. User-perceived latency may be reducedbetween a user's selection of the selectable item and the display ofcontent that is referenced by the selectable item by performing aspeculative action that includes at least part of an action that wouldensue if the selection were completed.

In an embodiment, an object (e.g., cursor) may be detected in a regionof a web page. The region may surround a selectable item associated witha URL. When it is determined that the object is present in the regionfor a threshold period of time, a speculative action is performed. Inanother embodiment, an object (e.g., stylus) may be detected within aproximity above a region of a touch screen device. The region maysurround a selectable item associated with a URL that is displayed on aweb page. When it is determined that the object is located within aproximity above the region for a threshold period of time, a speculativeaction is performed.

In the detailed description that follows, references to “oneembodiment”, “an embodiment”, “an example embodiment”, etc., indicatethat the embodiment described may include a particular feature,structure, or characteristic, but every embodiment may not necessarilyinclude the particular feature, structure, or characteristic. Moreover,such phrases are not necessarily referring to the same embodiment.Further, when a particular feature, structure, or characteristic isdescribed in connection with an embodiment, it is submitted that it iswithin the knowledge of one skilled in the art to effect such feature,structure, or characteristic in connection with other embodimentswhether or not explicitly described.

While the present disclosure is described herein with reference toembodiments for particular applications, it should be understood thatthe disclosure is not limited thereto. Those skilled in the art withaccess to the teachings provided herein will recognize additionalmodifications, applications, and embodiments within the scope thereofand additional fields in which the disclosure would be of significantutility.

II. Exemplary System Architecture

FIG. 1 shows an illustration of an exemplary communication system 100 inwhich embodiments can be implemented, according to an embodiment. System100 includes a client browser 110 that is communicatively coupled to aserver 120 via a network 130. Although system 100 is described hereinwith reference to one client browser and one server, one of skill in theart will recognize that system 100 may also include more than one clientbrowser and more than one server.

Web browsers are software applications that allow a user to view ordownload content that is available on a network, such as on a website onthe World Wide Web. Content may include, for example and withoutlimitation, text, files, images, audio, video and personalcommunications. Web pages present such content and are located usinguniform resource identifiers (URI) such as a uniform resource locator(URL). Web pages may be retrieved using the Internet Protocol (IP)address of the computer holding the web page content.

Browsers may use a number of protocols and standards to obtain or managecontent flow. Many browsers use hypertext transfer protocol (HTTP) tofetch content and web pages. HTTP is an application-level protocolproviding basic request/response semantics. HTTP can be used forrequesting and retrieving objects from a server.

Server 120 can be, for example and without limitation, atelecommunications server, a web server, or other type of databaseserver that supports web protocols such as HTTP. A web server maycontain web applications which generate content in response to an HTTPrequest. The web server may package the generated content and serve thecontent to a client in the form of an HTTP response. A web server may bea software component that responds to an HTTP request with an HTTPreply. As illustrative examples, the web server may be, withoutlimitation, Apache HTTP Server, Apache Tomcat, Microsoft InternetInformation Server, JBoss Application Server, WebLogic ApplicationServer, or Sun Java System Web Server. The web server may serve contentsuch as hypertext markup language (HTML), extendable markup language(XML), documents, videos, images, multimedia features, or anycombination thereof. This example is strictly illustrative and does notlimit the scope of the present disclosure.

Client browser 110 can run on any computing device. Similarly, server120 can be implemented using any computing device capable of servingdata to the client. Examples of computing devices include, but are notlimited to, a central processing unit, an application-specificintegrated circuit, a computer, workstation, distributed computingsystem, computer cluster, embedded system, stand-alone electronicdevice, networked device, mobile device (e.g. mobile phone, smart phone,personal digital assistant (PDA), navigation device, tablet or mobilecomputing device), rack server, set-top box, or other type of computersystem having at least one processor and memory. A computing processperformed by a clustered computing environment or server farm may becarried out across multiple processors located at the same or differentlocations. Such a computing device may include software, firmware,hardware, or a combination thereof. Software may include one or moreapplications and an operating system. Hardware can include, but is notlimited to, a processor, memory and user interface display.

Network 130 can be any network or combination of networks that can carrydata communication, and may be referred to herein as a computer network.Such network 140 can include, but is not limited to, a wired (e.g.,Ethernet) or a wireless (e.g., Wi-Fi and 3G) network, a local areanetwork, medium area network, and/or wide area network such as theInternet. Network 140 can support protocols and technology including,but not limited to, World Wide Web protocols and/or services.Intermediate web servers, gateways, or other servers may be providedbetween components of system 100 depending upon a particular applicationor environment.

III. Exemplary Client Browser

FIG. 2 shows a block diagram of an exemplary computer system 200,according to an embodiment. System 200 includes client device 210, whichcan communicate over network 130.

Client device 210 includes client browser 110. Client browser 110 mayretrieve web pages through a series of requests to and responses from aserver. In one example, client browser 110 sends a request to server120, such as for a web page, over network 130. Server 120 receives therequest and returns a response such as content for the requested webpage.

Client browser 110 includes a renderer 220. Renderer 220 displayscontent associated with the web page. In one example, when a userrequests a web page, renderer 220 can render the web page on-screen. Theweb page may include items that are selectable by a user. An example ofa selectable item in a web page is a hyperlink. A hyperlink may be aword, group of words, or an image that a user can select to navigate toa new document or a different section within the current document. Aselectable item can reference a document or specific content in adocument. Examples of documents are HTML documents and XHTML documents.These examples are not intended to be limiting.

Client browser 110 also includes a speculative prefetch system 230.Speculative prefetch system 230 includes an object detector 240, athreshold determiner 245, and a speculator 250. Speculative prefetchsystem 230 may be a browser plug-in that adds functionality to clientbrowser 110 or may be native to client browser 110. In an embodiment,speculative prefetch system 230 may be implemented within client browser110. In another embodiment, speculative prefetch system 230 may becoupled to client browser 110. Client browser 110 may be coupled to adatabase 270 that stores information associated with speculativeprefetch system 200. Data stored in database 270 may be used to reduceweb page load time.

A. Selecting an Item with a Cursor

For ease of explanation, some parts of this disclosure will be describedin the context of selecting an item using a cursor. Based on thedescription herein, a person of ordinary skill in the relevant art willrecognize that parts of this disclosure that refer to selecting an itemusing a cursor are relevant to other embodiments that select an item(e.g., selecting an item via a touch screen device).

A user can interact with a web page by controlling an object in a userinterface on a display device and selecting items using the object. Inan embodiment, an object that is used to select an item in the web pageis a user interface cursor. The user may interact with the web page bymoving the cursor over a selectable item in the web page and selectingthe item. As used typically herein, a cursor can be controlled by amouse, trackball, optical mouse, touchpad, or other device, and can beused to manipulate user interface objects.

The user may select an item in various ways using the cursor. Forexample, the user can select an item by “clicking” on the item (e.g.,clicking and releasing a button on a mouse), “double-clicking” on theitem, or “right-clicking” on the item and choosing an option from adisplay menu.

The selectable item may be surrounded by a “hot region” on the web page.A hot region may be a region on the web page that causes a timer tostart when the cursor enters the region. Time may elapse between thetime a user decides to select the item and the time the user actuallyselects the item. During this time, the user may position the cursornear the item. Before the user selects the item, the cursor may lingerin the region. The duration of time that the cursor is present in thehot region may be measured from the time the cursor enters into the hotregion without exiting the hot region. A dwell action occurs when thecursor remains in the hot region for a threshold period of time. A dwellaction may indicate a high likelihood that the user will select theselectable item in the near future. According to an embodiment, when adwell action occurs, an application takes speculative actions on behalfof the user. The speculative actions taken may include all or part of anaction that would ensue if the selection were completed.

FIG. 3A shows an example web page 305 that includes a region 310surrounding a selectable item 315 associated with a URL, according to anembodiment. The URL associated with selectable item 315 is“www.link1.com/here.” Selectable item 315 may reference contentspecified by the URL. Region 310 is a hot region that starts a timerwhen a cursor 320 enters into region 310.

In an embodiment, object detector 240 detects cursor 320 in region 310of web page 305. A user can position cursor 320 over selectable item 315and select it. A cursor position can be an X, Y value that stores theposition of the cursor on a user interface at a particular moment intime. A current position 325, as shown in FIG. 3A, of cursor 320 isoutside of region 310. This lack of presence inside the hot region maybe an indication that the user does not intend to select selectable item315. Accordingly, a timer does not start counting when cursor 320 is atposition 325.

After cursor 320 moves from position 325 along a track 330 to a position335, cursor 320 is present in region 310. If the user positions cursor320 in region 310, a probability that the user will select selectableitem 315 may increase. According to an embodiment, a timer startscounting as soon as the cursor enters the hot region. The timer may stopcounting once the cursor has been present in the region for a thresholdperiod of time. Different speculative actions may be triggered based ondifferent threshold periods of time. In one example, a first speculativeaction is triggered if cursor 320 has been present in region 310 for afirst threshold period of time, and a second speculative action istriggered if cursor 320 has been present in region 310 for a secondthreshold period of time. If the second threshold period of time islonger than the first threshold period of time, the timer continuescounting after the first threshold period of time elapses. In thisexample, the timer stops counting once the cursor has been present inthe region for the second threshold period of time.

Threshold determiner 245 determines whether cursor 320 is present inregion 310 for a threshold period of time. If cursor 320 has beenpresent in region 310 for a threshold period of time, a dwell action isdeemed to have occurred. An occurrence of a dwell action signals a highprobability that the user will select selectable item 315. If a dwellaction occurs, threshold determiner 245 may provide an instruction toperform a speculative action. The speculative action is performed withan expectation that the user will request specified content referencedby the selectable item in the near future. The speculative action mayinclude all or at least part of an action that would be performed if theselection were completed.

Speculator 250 performs a speculative action when an instruction toperform a speculative action is provided by threshold determiner 245. Inan embodiment, the speculative functionality is provided withoutmodifying underlying code of a web page associated with the URL.

In an embodiment, the speculative action includes performing a DomainName System (DNS) preresolution. A DNS preresolution may includeperforming a DNS lookup of the URL hostname before it is certain thatthe user will select the associated selectable item. A URL includes ahostname and an optional path. A hostname, as referred to herein, meansboth the DNS resolvable textual name of a host (e.g., www.cnn.com) aswell as optionally a port (e.g., port 80, port 443, or port 5000) and ascheme (e.g., HTTP, HTTPS, or FTP). In FIG. 3A, for example, selectableitem 315 is associated with URL “www.link1.com/here”, which includes aURL hostname “www.link1.com” and a path “/here”. Speculator 250 mayperform a DNS preresolution of the URL hostname (e.g., “www.link1.com”).The URL hostname may be sent to a DNS server to resolve the URL hostnameinto an Internet Protocol (IP) address.

In another embodiment, the speculative action includes initiating apreconnection to a URL hostname. Initiating a preconnection may includeestablishing a connection to the URL hostname, or to the URL hostnameplus some or all parts of the URL path or query string, before theconnection is required with complete certainty. For example, speculator250 may initiate a preconnection to a URL hostname. The connection mayfloat in the background until the user actually selects the selectableitem.

A secure connection may be established to the URL hostname. In anembodiment, initiating a preconnection includes initiating a securepreconnection. Establishing a secure preconnection to a hostname mayinclude negotiating and establishing a session key. In an embodiment, asecure connection is an SSL connection. Other security protocols canalso be used to establish secure connections.

In another embodiment, the speculative action includes precomputing aresult of triggering an on-click event in a JavaScript script. Theprecomputed result may be a completed result or a partial result.

In another embodiment, the speculative action includes prefetchingcontent of a URL. Prefetching content of a URL may include requestingthe URL specified content before it is certain to be requested by theuser. For example, speculator 250 may prefetch content of the URL.Prefetched content associated with a URL may be preprocessed by renderer220. Preprocessing may include preparing the content associated with theURL hostname for rendering. Renderer 220 can render or display theprefetched content. For example, when a user requests the content,renderer 220 can render the page and display the page on-screen.Renderer 220 can also render content off-screen and partially preprocessthe prefetched content. Renderer 220 may obtain the content, forexample, from a cache.

In an embodiment, different speculative actions can be performed basedon a time period that the cursor remains in the hot region. An actionmay be performed based on a degree of confidence that the user willselect the selectable item. The longer a cursor remains in a region thatsurrounds a selectable item, the higher the confidence may be that theuser will select the item. Accordingly, more aggressive actions may betaken based on a longer duration of time that the cursor remains in thehot region.

If the cursor remains in the hot region for an extended period of timeafter a first threshold period of time has elapsed, this may indicate ahigher probability that the user will select the item. In one example,if a cursor remains in a hot region for a first threshold period oftime, threshold determiner 245 may provide an instruction to perform aDNS preresolution of the URL hostname associated with the selectableitem. If the cursor remains in the hot region for a second thresholdperiod of time greater than the first threshold period of time,threshold determiner 245 may provide an instruction to initiate apreconnection to the URL hostname. In one example, threshold determiner245 initiates a TCP/IP connection to the URL hostname associated withthe selectable item.

FIG. 3B shows an example web page 350 that includes regions surroundingselectable items associated with URLs, according to an embodiment. Aregion 355 surrounds a selectable item 360 associated with a first URL.A region 365 surrounds a selectable item 370 associated with a secondURL.

A cursor 375 is at a position 376 in region 365. When cursor 375 entersregion 365, a timer starts. If cursor 375 stays in region 365 for athreshold period of time, a dwell action is deemed to have occurred. Inone implementation, as long as cursor 375 remains in region 365, thetimer continues counting. For example, as cursor 375 continues to movealong track 377 toward position 380, the timer continues counting. Ifcursor 375 moves from within region 365 to outside of region 365 beforea threshold period of time elapses, a dwell action does not occur. Ifcursor 375 is subsequently moved to a position that is located in region365, the timer restarts, for example from zero, and continues to countto a threshold period of time.

If cursor 375 does not stay in region 365 for a threshold period oftime, the timer does not continue. For example, if cursor 375 moves fromposition 380 to position 383, the timer stops counting. If cursor 375moves along the track from position 383 to position 385, the timer isreset and starts counting. In one embodiment, when cursor 375 leaves ahot region, the time is reset. In another embodiment, when cursor 375leaves a hot region, the time stops and is reset when the cursorsubsequently enters a hot region.

An area of a region that surrounds a selectable item associated with aURL may vary. In one example, an area of a region is hardcoded into theweb page. In another example, an area of a region is dynamicallydetermined. For example, an area of the region may be subsequentlyincreased when the user selects the item that the region surrounds. Inthis example, the area of the region may be increased on subsequentrenderings of the selectable item. In FIG. 3B, for example, a user mayhave previously selected selectable item 370 a greater quantity of timesthan the user previously selected selectable item 360. Accordingly, anarea of region 365 is larger than an area of region 355.

An area of a region may have minimum and maximum values. In anembodiment, an area of a hot region of a web page is smaller than anarea of the web page and includes only a single selectable item. Forexample, in FIG. 3B, an area of region 355 has an area smaller than anarea of web page 350. In this embodiment, when a web page is displayed,threshold determiner 245 does not automatically start the timer.Instead, threshold determiner 245 starts the timer when cursor 275 isdetected in a hot region. In an embodiment, an area of a region thatsurrounds a selectable item is approximately equal to an area of theselectable item. In this embodiment, threshold determiner 245 may startthe timer when cursor 275 is hovering over the selectable item.

B. Selecting an Item via a Touch Screen Device

A user can also interact with a web page displayed on a display of atouch screen device by selecting an item in the web page. In anembodiment, an object that is used to select an item in the displayedweb page is a finger, stylus, capacitive object, or other object thatcan select items in a web page displayed on a touch screen device. Asused typically herein, an object can be used to manipulate userinterface objects that are displayed via the touch screen device.

In an embodiment, an object used to select an item is a finger. The usermay select an item in various ways using her finger. In one example, theuser can select an item by tapping the item at least once. Tapping anitem may include touching her finger at a location of the displayed itemon the touch screen device and releasing the touch screen. A time periodmay elapse between touching and releasing the touch screen. In anotherexample, the user can select an item by touching her finger at alocation of the displayed item on the touch screen device and leavingher finger at the location.

FIG. 4A shows an example web page 405 displayed on a touch screen device410, according to an embodiment. Web page 405 includes a region 415 thatsurrounds a selectable item 420 associated with a URL displayed on webpage 405. Selectable item 420 references a document located at the URL“www.link1.com/here.”

A user may interact with web page 405 by selecting items in the webpage. The user can, for example, use her finger 425 to select selectableitem 420 by tapping on a location of the screen that displays selectableitem 420.

FIG. 4B shows an object located within a proximity above a region of atouch screen device, according to an embodiment. Region 435 of FIG. 4Bcorresponds to region 415 of FIG. 4A. Region 435 surrounds a selectableitem associated with a URL that is displayed on web page 405. Before theuser selects selectable item 420, the user may position her finger abovea location on the screen that displays selectable item 420.

Because of the capacitive nature of most touch screens, the touch screenwill actually register the presence of an object, such as a finger,before the object physically contacts the touch screen surface. A “hotproximity” may be a proximity above a region that surrounds a selectableitem in a web page above the touch screen device that causes a timer tostart when an object (e.g., finger or stylus) is within the proximity.Before the user selects the item, the user may hold the object above theregion. The duration of time the object is located within the hotproximity may be measured from the time the object enters into the hotproximity without exiting the hot proximity. A dwell action occurs whenthe object remains within the hot proximity for a threshold period oftime. If the object lingers within a proximity above a region of a touchscreen device for a threshold period of time, it may be more likely thatthe user will select the selectable item. As described above, when adwell action occurs, an application may take speculative actions onbehalf of the user.

Object detector 240 detects finger 425 within a proximity 430 above aregion 435 of touch screen device 410. Object detector 240 may detectfinger 425 before finger 425 touches the screen.

Threshold determiner 245 determines whether finger 425 is located withinproximity 430 above region 435 of touch screen device 410 for athreshold period of time. If finger 425 has been located withinproximity 430 above region 435 of touch screen device 410 for athreshold period of time, a dwell action is deemed to have occurred. Anoccurrence of a dwell action signals a high probability the user willselect the selectable item. If a dwell action occurs, thresholddeterminer 245 provides an instruction to perform a speculative action.The speculative action is performed with an expectation that the userwill request specified content referenced by the selectable item in thenear future. A speculative action may include all or at least part of anaction that would be performed if the selection were completed.

Speculator 250 performs a speculative action when an instruction toperform a speculative action is provided by threshold determiner 245. Inan embodiment, the speculative functionality is provided withoutmodifying underlying code of a web page associated with the URL.

C. Other Example Embodiments

While system 200 embodied in FIG. 2 shows client browser 110 includingobject detector 240, threshold determiner 245, and speculator 250,client browser 110 can include more or fewer modules. Additionally,client browser 110 may include a combination of the modules describedabove.

System 200 may include a communications interface that allows softwareand data to be transferred between computer system 200 and externaldevices. Some embodiments may be directed to computer products havingsoftware stored on a computer readable storage medium. Such software,when executed in one or more data processing devices, causes a dataprocessing device(s) to operate as described herein.

In an embodiment, object detector 240 contains a camera or other visiondetector that detects a point on a screen at which a user is looking. Inthis embodiment, object detector 240 may detect a user staring at aregion of a web page, the region surrounding a selectable itemassociated with a URL. Threshold determiner 245 may determine whetherthe user is staring at the region for a threshold period of time.Speculator 250 may perform a speculative action when it is determinedthat the user has been staring at the region for the threshold period oftime. In an embodiment, the speculative functionality is providedwithout modifying underlying code of a web page associated with the URL.

In another embodiment, system 200 is coupled to a local database that isaccessed when a dwell action occurs. For example, a user may select anoption such as “edit contact” on her mobile device having a touchscreen. Before the user selects the option, object detector 240 maydetect the user's finger within a proximity above a region of the touchscreen device, the region surrounding the selectable option displayed onthe screen. Threshold determiner 245 may determine whether the user'sfinger is located within the proximity above the region of the touchscreen device for a threshold period of time. Before it is certain theuser will select the option, a speculative action may be performed. Forexample, speculator 250 may perform a speculative action when it isdetermined that the user's finger has been located within the proximityabove the region of the touch screen device for the threshold period oftime. A speculative action may include reading from memory informationthat might be needed as a result of the user selecting the option. Forexample, performing a speculative action may include reading all thecontact information from memory that might be needed as a result of theuser selecting “edit contacts.” A person of ordinary skill in therelevant art will recognize that data different from the describedcontact information may be stored at the client device, and the user mayselect other options. Another example of performing speculative actionsmay include starting or partially starting an application that might beloaded and started if selected by a user.

IV. Threshold Period of Time

Referring to FIG. 2, client device 210 may be coupled to a database 270.Threshold determiner 245 may consult database 270 to determine thethreshold period of time. In an embodiment, threshold determiner 245 maystore data such as the threshold period of time that a cursor needs toremain in a hot region for a dwell action to occur. In anotherembodiment, threshold determiner 245 may store data such as thethreshold period of time that an object remains within a proximity abovea region of a touch screen device before a dwell action is deemed tohave occurred.

In an embodiment, the threshold period of time that elapses before adwell action occurs is greater than zero milliseconds. Timing the dwelltime may ensure that an overfly action has not occurred, and may resultin an optimal decision to perform a speculative action.

The threshold period of time may be determined at the client device. Inan embodiment, threshold determiner 245 determines a threshold period oftime that a cursor remains in a hot region before identifying a dwellaction. In another embodiment, threshold determiner 245 determines athreshold period of time that an object remains within a proximity abovea hot region of a touch screen device before identifying a dwell action.

The threshold period of time may be fixed or based on different factors,in an embodiment, a threshold period of time is static. Examples ofstatic threshold periods of time are 100 milliseconds and 200milliseconds.

In another embodiment, a threshold period of time is dynamicallydetermined. The threshold period of time may be dynamically modifiedbased on a user's patterns and preferences. Dynamically determining thethreshold period of time may increase precision and allow client browser110 to make an optimal decision regarding whether to perform aspeculative action. Further, the chance of false positives may bedecreased. In an embodiment, a threshold period of time is dynamicallydetermined based on a user's hover-and-click history, a user's clickhistory, speculative information received from a remote site, or anycombination thereof.

In an embodiment, a threshold period of time is based on a user'shover-and-click history. Threshold determiner 245 may monitor a user andobserve a time period between the time a user positions a cursor in ahot region and the time the user selects a selectable item. For example,if the user does not typically position the cursor near a selectableitem for 200 milliseconds without selecting the item, thresholddeterminer 245 may set the threshold period of time approximately equalto 200 milliseconds. In this example, when the cursor remains in the hotregion for approximately 200 milliseconds, a dwell action is deemed tohave occurred and threshold determiner 245 provides an instruction toperform a speculative action. In another example, threshold determiner245 may observe that the user does not typically position the cursornear a selectable item for 100 milliseconds without selecting the item.Threshold determiner 245 may adjust the threshold period of timeaccordingly. In one example, threshold determiner 245 takes a weightedaverage of two periods of time and determines a final threshold periodof time.

In another embodiment, a threshold period of time is based on a user'sbrowsing history. Threshold determiner 245 may monitor a user's browsinghistory (e.g., click history). Threshold determiner 245 may determinefrom a user's click history whether the user has previously selected anitem. If the user's click history indicates that the user has previouslyselected the item, the threshold period of time may be less than if theuser's click history indicates that the user has not previously selectedthe item.

In one example, referring to FIG. 3B, a user's click history mayindicate that the user has previously selected selectable item 360. Athreshold period of time that cursor 375 remains in region 355 before adwell action is identified is a first threshold period of time. Theuser's click history may indicate that the user has not previouslyselected selectable item 370. A threshold period of time that cursor 375remains in region 365 before a dwell action is identified is a secondthreshold period of time. In this example, the first threshold period oftime may be less than the second threshold period of time.

In another embodiment, a threshold period of time is based onspeculative information received from a server (e.g., server 120). Whena server sends a web page to client browser 110, the web page mayinclude speculative information that threshold determiner 245 uses todetermine a threshold period of time.

In one example, speculative information includes a popularity of a link.For example, referring to FIG. 3B, server 120 may send client browser110 a web page in response to a request. When client browser 110 rendersthe web page, web page 350 may be displayed to a user. The web page sentto client browser 110 may include a popularity of selectable items 360and 370. This may be determined by a number of times users have selectedthe selectable items. A popularity may be a popularity of the selectableitem, a popularity of items that are similar to the selectable item, ora combination thereof. In an embodiment, the higher a popularity of aselectable item, the lower a threshold period of time before a dwellaction is identified. In this embodiment, a popularity of a selectableitem may be an indication of whether the user will select the item. Thespeculative information may be present in a web page header, web pagecontent, a link tag associated with the URL, or other location.

V. Exemplary Methods

FIG. 5 shows a flowchart of an exemplary method for reducing web pageload time based on user dwell time, according to an embodiment.

At a stage 510, a cursor is detected in a region of a web page, theregion surrounding a selectable item associated with a URL. For example,object detector 240 detects a cursor in a region of a web page, theregion surrounding a selectable item associated with a URL.

At a stage 520, it is determined whether the cursor is present in theregion for a threshold period of time. For example, threshold determiner245 determines whether the cursor is present in the region for athreshold period of time.

At a stage 530, a speculative action is performed when it is determinedthat the cursor has been present in the region for the threshold periodof time. The speculative action is performed without modifyingunderlying code of a web page associated with the URL. For example,speculator 250 performs a speculative action when it is determined thatthe cursor has been present in the region for the threshold period oftime, without modifying underlying code of a web page associated withthe URL.

FIG. 6 shows a flowchart of an exemplary method for reducing web pageload time based on user dwell time, according to an embodiment.

At a stage 610, an object is detected, by a touch screen device, withina proximity above a region of the touch screen device, the regionsurrounding a selectable item associated with a URL displayed on a webpage. For example, object detector 240 detects, by a touch screendevice, an object within a proximity above a region of the touch screendevice, the region surrounding a selectable item associated with a URLdisplayed on a web page.

At a stage 620, it is determined whether the object is located withinthe proximity above the region of the touch screen device for athreshold period of time. For example, threshold determiner 245determines whether the object is located within the proximity above theregion of the touch screen device for a threshold period of time

At a stage 630, a speculative action is performed when it is determinedthat the object has been located within the proximity above the regionfor the threshold period of time. The speculative action is performedwithout modifying underlying code of a web page associated with the URL.For example, speculator 250 performs a speculative action when it isdetermined that the object has been located within the proximity abovethe region for the threshold period of time, without modifyingunderlying code of a web page associated with the URL.

While methods 500 and 600 are described with reference to system 200,methods 500 and 600 are not meant to be limiting and may be used inother applications.

Stages 510-530 and 610-630 may be performed by renderer 220, objectdetector 240, speculator 250, and prefetcher 260. In other embodiments,stages 510-530 and 610-630 may be performed by a single module, forexample, speculative prefetch system 230 or object detector 240.

VI. Conclusion

The summary and abstract sections may set forth one or more but not allexemplary embodiments as contemplated by the inventor(s), and thus, arenot intended to limit the present disclosure and the appended claims inany way.

Some embodiments have been described above with the aid of functionalbuilding blocks illustrating the implementation of specified functionsand relationships thereof. The boundaries of these functional buildingblocks have been arbitrarily defined herein for the convenience of thedescription. Alternate boundaries can be defined so long as thespecified functions and relationships thereof are appropriatelyperformed.

Some embodiments, or portions thereof, can be implemented ascomputer-readable code. For example, some embodiments may be implementedin a computer system using software, firmware, hardware, tangiblecomputer-readable media having instructions stored thereon, or acombination thereof and may be implemented in one or more computersystems or other processing systems. Some embodiments may be implementedas software executing on one or more computing devices. Further, thesecomponents can be implemented using a processor (e.g., dual processor orspread across multiple machines). The processor can be connected to acommunication infrastructure (for example, a bus or network).

The foregoing description of the specific embodiments will so fullyreveal the general nature of the disclosure that others can, by applyingknowledge within the skill of the art, readily modify and/or adapt forvarious applications such specific embodiments, without undueexperimentation, without departing from the general concept of thepresent disclosure. Therefore, such adaptations and modifications areintended to be within the meaning and range of equivalents of thedisclosed embodiments, based on the teaching and guidance presentedherein. It is to be understood that the phraseology or terminologyherein is for the purpose of description and not of limitation, suchthat the terminology or phraseology of the present specification is tobe interpreted by the skilled artisan in light of the teachings andguidance.

The breadth and scope of the present disclosure should not be limited byany of the above-described exemplary embodiments.

Exemplary embodiments have been presented. The disclosure is not limitedto these examples. These examples are presented herein for purposes ofillustration, and not limitation. Alternatives (including equivalents,extensions, variations, deviations, etc., of those described herein)will be apparent to persons skilled in the relevant art(s) based on theteachings contained herein. Such alternatives fall within the scope andspirit of the disclosure.

What is claimed is:
 1. A method for reducing web page load time, themethod comprising: receiving, using one or more computing devices,cursor information regarding an amount of time a cursor is hoveringwithin a region of a web page, the region being associated with aselectable item on the web page; identifying, using the one or morecomputing devices, an adjustable threshold time based on speculativeinformation regarding a browser history associated with a user, theadjustable threshold time indicating a given period of time for the userto select the selectable item; determining, using the one or morecomputing devices, whether the cursor is hovering within the region ofthe web page for the adjustable threshold time based on the cursorinformation; and when the cursor is determined to be hovering within theregion of the web page for the adjustable threshold time, generating,using the one or more computing devices, instructions to perform a firstspeculative action on a URL associated with the selectable item withoutmodifying underlying code of the web page associated with the URL;wherein adjusting the adjustable threshold time is determineddynamically based on the speculative information.
 2. The method of claim1, further comprising selecting the first speculative action from a setof speculative actions comprising at least one of: performing a DNSpreresolution of the URL, initiating a first preconnection to the URL,and prefetching a first content of the URL.
 3. The method of claim 2,wherein the URL comprises a URL hostname and the instructions to performthe first speculative action include instructions for performing the DNSpreresolution of the URL hostname.
 4. The method of claim 2, wherein theURL comprises a URL hostname and the instructions to perform the firstspeculative action include instructions for initiating the firstpreconnection to the URL hostname.
 5. The method of claim 4, wherein theinstructions for initiating the first preconnection to the URL hostnamecomprises instructions for establishing a secure connection to the URLhostname.
 6. The method of claim 2, wherein the speculative informationincludes information regarding a hover-over-click history associatedwith the user.
 7. The method of claim 6, further comprising: determiningfrom the hover-over-click history whether the user has previouslyselected the selectable item; and adjusting the adjustable thresholdtime based on the determination by increasing the given period of timefor the user to select the selectable item.
 8. The method of claim 7,further comprising: determining whether the cursor is hovering withinthe region of the web page for the adjusted adjustable threshold time;when the cursor is determined to be hovering within the region of theweb page for the adjusted adjustable threshold time, selecting a secondspeculative action from the set of speculative actions, the secondspeculative action is different than the first speculative action, andgenerating instructions to perform the second speculative action on theURL associated with the selectable item without modifying underlyingcode of the web page associated with the URL.
 9. A non-transitorycomputer-readable storage medium on which computer readable instructionsof a program are stored, the instructions, when executed by one or morecomputing devices, cause the one or more computing devices to perform amethod comprising: receiving, using the one or more computing devices,cursor information regarding an amount of time a cursor is hoveringwithin a region of a web page, the region being associated with aselectable item on the web page; identifying, using the one or morecomputing devices, an adjustable threshold time based on speculativeinformation regarding a browser history associated with a user, theadjustable threshold time indicating a given period of time for the userto select the selectable item; determining, using the one or morecomputing devices, whether the cursor is hovering within the region ofthe web page for the adjustable threshold time based on the cursorinformation; and when the cursor is determined to be hovering within theregion of the web page for the adjustable threshold time, generating,using the one or more computing devices, instructions to perform a firstspeculative action on a URL associated with the selectable item withoutmodifying underlying code of the web page associated with the URL;wherein adjusting the adjustable threshold time is determineddynamically based on the speculative information.
 10. Thecomputer-readable storage medium of claim 9, wherein the method furthercomprises selecting the first speculative action from a set ofspeculative actions comprising at least one of: performing a DNSpreresolution of the URL, initiating a first preconnection to the URL,and prefetching a first content of the URL.
 11. The computer-readablestorage medium of claim 10, wherein the URL comprises a URL hostname andthe instructions to perform the first speculative action includeinstructions for performing the DNS preresolution of the URL hostname.12. The computer-readable storage medium of claim 10, wherein the URLcomprises a URL hostname and the instructions to perform the firstspeculative action include instructions for initiating the firstpreconnection to the URL hostname.
 13. A processing system, comprising:a memory for storing a browser history, and one or more processorscoupled to the memory, the one or more processors being configured to:receive cursor information regarding an amount of time a cursor ishovering within a region of a web page, the region being associated witha selectable item on the web page; identify an adjustable threshold timebased on speculative information regarding the browser historyassociated with a user, the adjustable threshold time indicating a givenperiod of time for the user to select the selectable item; determinewhether the cursor is hovering within the region of the web page for theadjustable threshold time based on the cursor information; and when thecursor is determined to be hovering within the region of the web pagefor the adjustable threshold time, generate instructions to perform afirst speculative action on a URL associated with the selectable itemwithout modifying underlying code of the web page associated with theURL; wherein adjustment of the adjustable threshold time is determineddynamically based on the speculative information.
 14. The system ofclaim 13, wherein the one or more processors are configured to selectthe first speculative action from a set of speculative actionscomprising at least one of: performing a DNS preresolution of the URL,initiating a first preconnection to the URL, and prefetching a firstcontent of the URL.
 15. The system of claim 14, wherein the URLcomprises a URL hostname and the instructions to perform the firstspeculative action include instructions for performing the DNSpreresolution of the URL hostname.
 16. The system of claim 14, whereinthe URL comprises a URL hostname and the instructions to perform thefirst speculative action include instructions for initiating the firstpreconnection to the URL hostname.
 17. The system of claim 16, whereinthe instructions for initiating the first preconnection to the URLhostname comprises instructions for establishing a secure connection tothe URL hostname.
 18. The system of claim 17, wherein the speculativeinformation includes information regarding a hover-over-click historyassociated with the user.
 19. The system of claim 18, wherein the one ormore processors are further configured to: determine from thehover-over-click history whether the user has previously selected theselectable item; and adjust the adjustable threshold time based on thedetermination by increasing the given period of time for the user toselect the selectable item.
 20. The system of claim 19, wherein the oneor more processors are further configured to: determine whether thecursor is hovering within the region of the web page for the adjustedadjustable threshold time; when the cursor is determined to be hoveringwithin the region of the web page for the adjusted adjustable thresholdtime, select a second speculative action from the set of speculativeactions, the second speculative action is different than the firstspeculative action, and generate instructions to perform the secondspeculative action on the URL associated with the selectable itemwithout modifying underlying code of the web page associated with theURL.